﻿namespace MsForgeReboot.Framework.Interfaces {
    #region Usings

    using System.Collections.Generic;
    using System.Linq;
    using MsForgeReboot.Framework.Entities;
    using MsForgeReboot.Framework.ViewModels;

    #endregion

    /// <summary>
    /// The CmsService interface.
    /// </summary>
    public interface ICmsService {
        #region Public Methods and Operators

        /// <summary>
        /// The delete.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        void Delete(int id);

        /// <summary>
        /// The delete page.
        /// </summary>
        /// <param name="pageID">
        /// The page id.
        /// </param>
        void DeletePage(int pageID);

        /// <summary>
        /// The get page by url title.
        /// </summary>
        /// <param name="urlTitle">
        /// The url title.
        /// </param>
        /// <returns>
        /// The <see cref="Page"/>.
        /// </returns>
        Page GetPageByUrlPointer(string urlTitle);

        /// <summary>
        /// The get page for section.
        /// </summary>
        /// <param name="sectionID">
        /// The section id.
        /// </param>
        /// <returns>
        /// The <see cref="Page"/>.
        /// </returns>
        Page GetPageForSection(int sectionID);

        /// <summary>
        /// The get sections.
        /// </summary>
        /// <returns>
        /// The <see cref="IQueryable"/>.
        /// </returns>
        IList<SectionListViewModel> GetSections();

        /// <summary>
        /// The get single section.
        /// </summary>
        /// <param name="id">
        /// The id.
        /// </param>
        /// <returns>
        /// The <see cref="Section"/>.
        /// </returns>
        Section GetSingleSection(int id);

        /// <summary>
        /// The save.
        /// </summary>
        /// <param name="section">
        /// The section.
        /// </param>
        void Save(Section section);

        /// <summary>
        /// The save page.
        /// </summary>
        /// <param name="page">
        /// The page.
        /// </param>
        void SavePage(PageAddViewModel page);


        #endregion
    }
}